import re


def main():
    # 匹配126或163
    ret = re.match(r"^([a-zA-Z_]{4,20})@(163|126)\.com$", "xiaofauks@163.com")
    print(ret.group())
    # 取第一个括号匹配的内容，括号中内容就是分组
    print(ret.group(1))
    # 取第二个括号匹配的内容
    print(ret.group(2))

    # 正则表达式中使用分组，匹配html语法是否正确
    # 第一个标签任意内容添加小括号变为分组1，html结尾需要与之对应\1表示第一个分组内容是什么就匹配什么
    html_ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", "<body><h1>xxxx</h1></body>")
    print(html_ret.group())

    # 如果分组过多使用下标序号不好找可以使用别名
    # 使用?P<别名>为分组取别名，使用(?P=别名)使用别名
    html_ret2 = re.match(r"<(?P<p1>\w*)><(?P<p2>\w*)>.*</(?P=p2)></(?P=p1)>", "<body><h1>xxxx</h1></body>")
    print(html_ret2.group())


if __name__ == '__main__':
    main()
